package types

import "time"

// ProcessMonitoringStats 进程监控统计数据结构
// 对应接口: GET /api/processes/stats
// 直接返回该结构体实例，包含系统整体统计信息
type ProcessMonitoringStats struct {
	// 进程统计
	TotalProcesses   int `json:"total_processes"`   // 总进程数
	ActiveProcesses  int `json:"active_processes"`  // 有网络活动的进程数
	SystemProcesses  int `json:"system_processes"`  // 系统进程数
	UserProcesses    int `json:"user_processes"`    // 用户进程数

	// 连接统计
	TotalConnections int `json:"total_connections"` // 总连接数
	TCPConnections   int `json:"tcp_connections"`   // TCP连接数
	UDPConnections   int `json:"udp_connections"`   // UDP连接数
	ListeningPorts   int `json:"listening_ports"`   // 监听端口数
	EstablishedConns int `json:"established_conns"` // 已建立连接数
	CloseWaitConns   int `json:"close_wait_conns"`  // CLOSE_WAIT连接数
	TimeWaitConns    int `json:"time_wait_conns"`   // TIME_WAIT连接数

	// 流量统计
	TotalBytesSent     uint64  `json:"total_bytes_sent"`     // 总发送字节数
	TotalBytesRecv     uint64  `json:"total_bytes_recv"`     // 总接收字节数
	TotalPacketsSent   uint64  `json:"total_packets_sent"`   // 总发送包数
	TotalPacketsRecv   uint64  `json:"total_packets_recv"`   // 总接收包数
	CurrentSpeedUp     float64 `json:"current_speed_up"`     // 当前上传速度 (B/s)
	CurrentSpeedDown   float64 `json:"current_speed_down"`   // 当前下载速度 (B/s)

	// 格式化字符串（前端直接使用）
	TotalTrafficSentText   string `json:"total_traffic_sent_text"`   // 格式化发送流量
	TotalTrafficRecvText   string `json:"total_traffic_recv_text"`   // 格式化接收流量
	CurrentSpeedUpText     string `json:"current_speed_up_text"`     // 格式化上传速度
	CurrentSpeedDownText   string `json:"current_speed_down_text"`   // 格式化下载速度

	// 时间信息
	UpdateTime     string `json:"update_time"`      // 更新时间 (格式: 2006-01-02 15:04:05)
	UpdateTimeUnix int64  `json:"update_time_unix"` // 时间戳 (毫秒)
	Uptime         string `json:"uptime"`           // 系统运行时间
}

// NewProcessMonitoringStats 创建新的进程监控统计数据
func NewProcessMonitoringStats() *ProcessMonitoringStats {
	return &ProcessMonitoringStats{
		UpdateTime:     time.Now().Format("2006-01-02 15:04:05"),
		UpdateTimeUnix: time.Now().UnixMilli(),
	}
}